package Presentacion.Inicio;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Fisica.Conexion;
import Fisica.Cooperativa.ProcCoope;
import Logica.Util;
import Logica.Cooperativa.Comprobante;
import Logica.Cooperativa.Factura;
import Logica.Cooperativa.Proveedores;
import Presentacion.Deposito.CargaFacturaUsuarioComprobante;
import Presentacion.Precios.PreciosArticulos;
import Presentacion.Stock.StockUsuarioDeposito;
import org.eclipse.wb.swing.FocusTraversalOnArray;
import java.awt.Component;

public class Principal extends JFrame {
	public static int alto = 300, ancho = 200;
	private JPanel contentPane;
	
	public String usuario, deposito;
//	public int comprobante;
	public Date fecha;
	public String fechaSTR;
//	public int padronCodigo, ptoVenta, nroFactura;
	public int idNotaPedido;
	
	public Proveedores prov;
	public Factura factura;
	public Comprobante comprobante;
	
	
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Principal frame = new Principal();
//					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Principal() {
		setTitle("Principal");
		this.setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, ancho, alto);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnCargaFacturas = new JButton("Carga Facturas");
		btnCargaFacturas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//llamo a la carga de facturas
				cargaFacturas();
			}
		});
		btnCargaFacturas.setFont(new Font("Tahoma", Font.PLAIN, 14));
		btnCargaFacturas.setBounds(24, 11, 133, 42);
		contentPane.add(btnCargaFacturas);
		
		JButton btnControlStock = new JButton("Control Stock");
		btnControlStock.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//llamo al control de stock
				controlStock();
			}
		});
		btnControlStock.setFont(new Font("Tahoma", Font.PLAIN, 14));
		btnControlStock.setBounds(24, 64, 133, 42);
		contentPane.add(btnControlStock);
		
		JButton btnConexin = new JButton("Conexi\u00F3n");
		btnConexin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
//				System.out.println("click en probar conexion");
				probarConexion();
			}
		});
		btnConexin.setToolTipText("Probar Conexi\u00F3n con base de datos");
		btnConexin.setBounds(44, 208, 89, 23);
		contentPane.add(btnConexin);
		
		JButton btnControlPrecios = new JButton("Control Precios");
		btnControlPrecios.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				controlPrecios();
			}
		});
		btnControlPrecios.setFont(new Font("Tahoma", Font.PLAIN, 14));
		btnControlPrecios.setBounds(24, 117, 133, 42);
		contentPane.add(btnControlPrecios);
		contentPane.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{btnCargaFacturas, btnControlStock, btnControlPrecios, btnConexin}));
	
		this.crearObjetos();
	
	}
	
	public void probarConexion(){
//		Conexion mysql;
        java.sql.Connection cn= Conexion.conectar();

        if(cn!=null){
                JOptionPane.showMessageDialog(null, "Conectado a:\n Server: "+Conexion.getSERVER());
                System.out.println(Conexion.getJDBC());
                try{
                    cn.close();
                }catch(SQLException ex){
                	 System.out.println(Conexion.getJDBC());
                    System.out.println("Error al desconectar "+ex);
                }
        }	
       }
	
	public void crearObjetos(){
		this.prov = new Proveedores();
		this.factura = new Factura();
		this.comprobante = new Comprobante();
	}
	
	
	
	public void stockUsuarioDeposito(String usuario, String deposito, Date fecha){
		this.usuario = usuario;
		this.deposito = deposito;
		this.fecha = fecha;
		this.fechaSTR = Util.getDate(fecha);
		
	}
	
	public void borraStockUsuarioDeposito(){
		this.usuario = "";
		this.deposito = "";
		this.fecha = null;
		this.fechaSTR = Util.getDate(this.fecha);
	}
	
	public void facturaUsuarioComprobante(String usuario, String deposito, int comprobante, Date fecha){
		this.usuario = usuario;
		this.comprobante = ProcCoope.getComprobante("", comprobante);	
		this.deposito = deposito;
		this.fecha = fecha;
		this.fechaSTR = Util.getDate(fecha);		
	}
	
	public void borrarfacturaUsuarioComprobante(){
		this.usuario = "";
		this.comprobante = new Comprobante();
		this.fecha = null;
		this.fechaSTR = Util.getDate(fecha);		
	}
	
	public void facturaProveedor(int padronCod, int ptoVenta, int nroFactura){
//		this.padronCodigo = padronCod;
//		this.ptoVenta = ptoVenta;
//		this.nroFactura = nroFactura;
		
		this.prov = ProcCoope.getProveedor(padronCod);
		this.factura.setPtoVenta(ptoVenta);
		this.factura.setNumeroFactura(nroFactura);
		
		System.out.println("padronCodigo: "+this.prov.getPadronCodigo());
		System.out.println("ptoVenta: "+this.factura.getPtoVenta());
		System.out.println("nroFactura: "+this.factura.getNumeroFactura());
		
	}
	
	
	public void controlStock(){
		try {
			new StockUsuarioDeposito(this);
		} catch (SQLException e) {			
			e.printStackTrace();
		}
	}
	
	public void cargaFacturas(){
		try {
			new CargaFacturaUsuarioComprobante(this);
		} catch (SQLException e) {
			System.out.println("Error al intentar abrir; 'CargaFacturaUsuarioProveedor(this)'");
			e.printStackTrace();
		}
	}
	
	public void controlPrecios(){
		new PreciosArticulos();
	}
	
	public String getFechaSTR(){
		return this.fechaSTR;		
	}
	
	public Date getFechaDATE(){
		return this.fecha;
	}
	
	public String getUsuario(){
		return this.usuario;		
	}
	
	public String getDeposito(){
		return this.deposito;		
	}
	
	public String getHora(){
		return Util.getHora();
	}
	
	public int getPadronCodigo(){
		if (this.prov.getPadronCodigo()>0){
			return this.prov.getPadronCodigo();
		}else{
			return -1;
		}
		
	}
	
	public int getPtoVenta(){
		return this.factura.getPtoVenta();
	}
	
	public int getNroFactura(){
		return this.factura.getNumeroFactura();
	}
	
	public Comprobante getComprobante(){
		return this.comprobante;
	}
	
	public void setComprobante(Comprobante comprobante){
		this.comprobante = comprobante;
	}
	
	
	public Proveedores getProv() {
		return prov;
	}

	public void setProv(Proveedores prov) {
		this.prov = prov;
	}

	public Factura getFactura() {
		return factura;
	}

	public void setFactura(Factura factura) {
		this.factura = factura;
	}
	
	public void setNumeroNotaPedido(int idNota){
		this.idNotaPedido = idNota;
	}
	
}
